package com.mohe.dangjian.dao;

import java.util.List;

import com.mohe.dangjian.model.VData;

/**
 * 握握健康在线总接口
 * 
 * @author dxm
 * 
 */
public interface IDao<T extends VData> {

	/**
	 * 插入一条数据并返回主键TimeKey
	 * 
	 * @param t
	 * @return
	 */
	public long add(T t);

	/**
	 * 插入
	 * 
	 * @param t
	 * @return
	 */
	public boolean insert(T t);

	/**
	 * 插入
	 * 
	 * @param t
	 * @return
	 */
	public boolean insert(List<T> ts);

	/**
	 * 删除
	 * 
	 * @param key
	 * @return
	 */
	public boolean delete(long key);

	/**
	 * 删除
	 * 
	 * @param t
	 * @return
	 */
	public boolean delete(T t);

	/**
	 * 删除
	 * 
	 * @param t
	 * @return
	 */
	public boolean delete(List<T> ts);

	/**
	 * 删除
	 * 
	 * @param where
	 * @param values
	 * @return
	 */
	public boolean delete(String where, Object... params);

	/**
	 * 删除
	 * 
	 * @param where
	 * @param values
	 * @return
	 */
	public boolean delete(String where, List<Object> params);

	/**
	 * 更新
	 * 
	 * @param ts
	 * @return
	 */
	public boolean update(T t);

	/**
	 * 更新
	 * 
	 * @param ts
	 * @return
	 */
	public boolean update(List<T> ts);

	/**
	 * 更新
	 * 
	 * @param set
	 * @param valueS
	 * @return
	 */
	public boolean update(String set, List<Object> params);

	/**
	 * 查询
	 * 
	 * @param where
	 *            条件
	 * @param values
	 *            ? 对应的值
	 * @return
	 */
	public List<T> query(String where, List<Object> params);

	/**
	 * 查询
	 * 
	 * @param list
	 * @param where
	 * @param values
	 * @param start
	 * @param count
	 * @return
	 */
	public List<T> query(String where, int start, int count, List<Object> params);

	/**
	 * 根据Key查询
	 * 
	 * @param key
	 * @return
	 */
	public T getByKey(long key);

	/**
	 * 获取所有
	 * 
	 * @return
	 */
	public List<T> getAll();

	/**
	 * 根据sql语句查询值集合
	 * 
	 * @param sql
	 * @return
	 */
	public List<Object> findBySql(String sql, List<Object> params);

	/**
	 * 根据Hql语句查询值集合
	 * 
	 * @param hql
	 * @param valueS
	 * @return
	 */
	public List<Object> findByHql(String hql, List<Object> params);

	/**
	 * 根据Hql语句查询值集合
	 * 
	 * @param hql
	 * @param valueS
	 * @return
	 */
	public List<Object> findByHql(String hql, List<Object> params, int start, int count);

	/**
	 * 获取满足条件的数据数量
	 * 
	 * @param where
	 * @param values
	 * @return
	 */
	public int getCount(String where, List<Object> params);
	
	/**
	 * 执行hql语句
	 * @param hql
	 * @return
	 */
	public int executeHql(String hql);

}
